package com.shenfa.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.shenfa.bean.Template;
import com.shenfa.bean.TemplateImage;
import com.shenfa.bean.Template_Sub;
import com.shenfa.tools.SteelTools;
/**
 * 
 * @author laixiaodong 
 * @date 2011-8-19
 */
public class TemplateDao {
	@Autowired
	private SqlMapClient sqlMapClient;
	
	/**
	 * 根据对象条件查询模板列表
	 * 
	 * @author yanglong
	 * 
	 * @param temp	模板对象
	 * @param skip	开始索引
	 * @param max	页面大小
	 * @return	模板列表
	 */
	@SuppressWarnings("unchecked")
	public List<Template> getList(Template temp, int skip, int max){
		List<Template> list = null;
		try {
			list = sqlMapClient.queryForList("template_manager.getList",temp,skip,max);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	
	/**
	 * 根据对象条件查询模板列表,模板管理
	 * 
	 * @author longchensan
	 * 
	 * @param temp	模板对象
	 * @param skip	开始索引
	 * @param max	页面大小
	 * @return	模板列表
	 */
	@SuppressWarnings("unchecked")
	public List<Template> getNotVerifyList(Template temp, int skip, int max){
		List<Template> list = null;
		try {
			list = sqlMapClient.queryForList("template_manager.getNotVerifyList",temp,skip,max);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	
	/**
	 * 根据对象条件查询模板列表,审核管理
	 * 
	 * @author longchensan
	 * 
	 * @param temp	模板对象
	 * @param skip	开始索引
	 * @param max	页面大小
	 * @return	模板列表
	 */
	@SuppressWarnings("unchecked")
	public List<Template> getVerifyList(Template temp, int skip, int max){
		List<Template> list = null;
		try {
			list = sqlMapClient.queryForList("template_manager.getVerifyList",temp,skip,max);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	public int queryCountvl(Template tempx){
	
		try {
			return (Integer) sqlMapClient.queryForObject("template_manager.queryCountvl",tempx);
		} catch (SQLException e) {
			e.printStackTrace();
			return -1;
		}
	}
	
	/**
	 * 查询所有模板
	 * 
	 * @author yanglong
	 * @return	所有模板集合
	 */
	@SuppressWarnings("unchecked")
	public List<Template> getAllList(Template template) {
		List<Template> list = null;
		try {
			list = sqlMapClient.queryForList("template_manager.getAllList", template);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	
	/**
	 * 通过相应参数（id。。。）查询模板不带分页
	 * 
	 * @author yanglong
	 * @return	模板集合
	 */
	@SuppressWarnings("unchecked")
	public List<Template> getTmpParamsList(Template template) {
		List<Template> list = null;
		try {
			list = sqlMapClient.queryForList("template_manager.getTmpParamsList", template);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
		return list;
	}
	
	/**
	 * 根据卡产品号查询模板列表
	 * @param cardid
	 * @param skip
	 * @param max
	 */
	@SuppressWarnings("unchecked")
	public List<Template> showList(String cardid,int skip,int max){
		List<Template> list= new ArrayList<Template>();
		try {
			list= sqlMapClient.queryForList("template_manager.getListByCard",cardid,skip,max);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}

	/**
	 * 添加模板
	 * @param template
	 * @return
	 */
	public int add(Template template) {
		try {
			sqlMapClient.insert("template_manager.add", template);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}

	/**
	 * 删除模板
	 * @param template
	 * @return
	 */
	public int del(Template template) {
		try {
			sqlMapClient.delete("template_manager.del", template);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}

	/**
	 * 更新模板
	 * @param template
	 * @return
	 */
	public int upd(Template template) {
		try {
			sqlMapClient.update("template_manager.upd", template);
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}
	
	/**
	 * 查询模板编号对应的所有模板从表信息
	 * 
	 * @param billStencilSub
	 *            账单管理-模板管理，与T_S_STENCIL_SUB[模版从表]对应
	 * @param skip
	 *            分页使用
	 * @param max
	 *            分页使用
	 * @return 模板信息
	 */
	@SuppressWarnings("unchecked")
	public List<Template_Sub> getTemplateSubs(Template_Sub template_Sub) {

		List<Template_Sub> list = null;
		try {
			list = sqlMapClient.queryForList("template_manager.getTemplateSubs", template_Sub);
		} catch (SQLException e) {
			SteelTools.log(e.getMessage());
		}
		return list;
	}

	/**
	 * 增加模板从表信息
	 * 
	 * @param billStencilSub
	 *            账单管理-模板管理，与T_S_STENCIL_SUB[模版从表]对应
	 * @return 增加是否成功，返回NULL则失败。
	 */
	public int insertTemplateSub(Template_Sub template_Sub) {

		try {
			sqlMapClient.insert("template_manager.insertTemplateSub", template_Sub);
			return 1;
		} catch (SQLException e) {
			SteelTools.log(e.getMessage());
			return 0;
		}
	}

	/**
	 * 更新模板从表信息
	 * 
	 * @param billStencilSub
	 *            账单管理-模板管理，与T_S_STENCIL_SUB[模版从表]对应
	 * @return 0 则表示更新失败。
	 */
	public int updateTemplateSub(Template_Sub template_Sub) {
		int rows = 0;
		try {
			rows = sqlMapClient.update("template_manager.updTemplateSub", template_Sub);
		} catch (SQLException e) {
			SteelTools.log(e.getMessage());
		}
		return rows;
	}

	/**
	 * 刪除模板从表信息
	 * 
	 * @param template_Sub
	 *            账单管理-模板管理，与T_S_STENCIL_SUB[模版从表]对应
	 * @return 0 则表示刪除失败。
	 */
	public int deleteTemplateSub(Template template) {
		int rows = 0;
		try {
			rows = sqlMapClient.delete("template_manager.delTemplateSub", template);
		} catch (SQLException e) {
			SteelTools.log(e.getMessage());
		}
		return rows;
	}
	
	/**
	 * 根据卡产品号查询对应的最新版本
	 * 
	 * @param cardid
	 */
	public Template getVersion(Template temp) {
		Template template = new Template();
		try{
			Object ver = sqlMapClient.queryForObject("template_manager.getVersionByCard", temp,null);
			ver = null==ver?0:ver;
			template.setVersion((Integer)ver+1);
		}catch(Exception e ){
			SteelTools.log(e.getMessage());			
		}
		return template;
	}
	
	/**
	 * 根据对象条件查询对应的最新版本
	 * 
	 * @param cardid
	 */
	@SuppressWarnings("finally")
	public Template getObject(Template temp) {
		Template template = null;
		try{
			template = (Template) sqlMapClient.queryForObject("template_manager.getObject", temp,null);
		}catch(Exception e ){
			SteelTools.log(e.getMessage());		
		} finally {
			return template;
		}
	}
	/**
	 * 新增图片样式路径
	 * 
	 * @param image
	 * @return
	 */
	public int addTempImage(TemplateImage image){
		try {
			sqlMapClient.insert("template_manager.addImage", image);
			return 1;
		} catch (SQLException e) {
			SteelTools.log(e.getMessage());
			return 0;
		}
	}
	
	/**
	 * 删除图片样式路径
	 * 
	 * @param image
	 * @return
	 */
	public int delTempImage(String image){
		int row = 0;
		try {
			row = sqlMapClient.delete("template_manager.delImage", image);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return row;
	}

	/**
	 * 查询图样
	 * 
	 * @param tempno
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<TemplateImage> queryImage(String tempno){
		List<TemplateImage> list = new ArrayList<TemplateImage>();
		try {
			list  = sqlMapClient.queryForList("template_manager.queryImage", tempno);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	
	/**
	 * 查询卡启用模板
	 * 
	 * @param cardid
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<Template> queryState(Template temp){
		List<Template> list=new ArrayList<Template>();
		try {
			list = sqlMapClient.queryForList("template_manager.listCanUseByPro", temp);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	
	/**
	 * 根据卡产品号查询对应的模板所有状态条数 
	 * 
	 * @param cardid
	 * @return
	 */
	public int queryTotalLen(Template temp){
		int len=0;
		try {
			len = (Integer)sqlMapClient.queryForObject("template_manager.getTotalLen", temp);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return len;
	}
	
	/**
	 * 根据卡产品号查询对应的模板审核状态条数
	 * 
	 * @param cardid
	 * @return
	 */
	public int queryStateLen(Template temp){
		int len=0;
		try {
			len = (Integer)sqlMapClient.queryForObject("template_manager.getStateLen", temp);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return len;
	}
	
	/**
	 * 根据卡产品号查询对应的模板非审核状态条数
	 * 
	 * @param cardid
	 * @return
	 */
	public int queryNotStateLen(Template temp){
		int len=0;
		try {
			len = (Integer)sqlMapClient.queryForObject("template_manager.getNotStateLen", temp);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return len;
	}
}
